﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using ICSharpCode.TextEditor.Document;
using System.Diagnostics;

namespace Läxomatic
{
    public partial class laxomatic : Form
    {
        //Ser till så att hela appliaktionen stänger ner då ma ntrycker krysset i översta högra hörnet.
        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            Application.Exit();
        }
        //Sätter publika objekt i SavedData.
        public laxomatic()
        {
            InitializeComponent();
            this.KeyPreview = true;
            SavedData.mainPanel = mainPanel;
            SavedData.Statuslabel = toolStripStatusLabel1;
            SavedData.mainform = this;
        }

        //Uppdaterar listorna med kurser, den för att välja matris, och den för att ta bort.
        private void laxomatic_Load(object sender, EventArgs e)
        {
            UpdateCourseList();
            DeleteCourse();
        }
        //Skapar matris då man klickar på en kurs.
        void MenuItemClickHandler(object sender, EventArgs e)
        {
            ToolStripMenuItem CurrentToolStripMenu = (ToolStripMenuItem)sender;

            CreateMatrix(CurrentToolStripMenu.Text); 
        }
        //Uppdaterar listan med kurser i.
        public void UpdateCourseList()
        {
            tsm_väljKurs.DropDownItems.Clear();
            Tabell<string> Kurser = new Tabell<string>(Myskul.Command("SELECT * FROM course" /*AS c JOIN user_course AS uc ON (c.id = uc.courseId) JOIN user u ON (uc.userId = u.id) JOIN teacher t ON (t.userId=u.id) WHERE u.loginname='"+SavedData.user+"';"*/));
            List<string> KursNamn = Kurser.getColumn(1);

            ToolStripMenuItem[] items = new ToolStripMenuItem[KursNamn.Count];
            for (int i = 0; i < items.Length; i++)
            {
                items[i] = new ToolStripMenuItem();
                items[i].Name = "dynamicItem" + i.ToString();
                items[i].Tag = "specialDataHere";
                items[i].Text = KursNamn[i];
                items[i].Click += new EventHandler(MenuItemClickHandler);
            }

            tsm_väljKurs.DropDownItems.AddRange(items);
        }
        //Ber matrisen att rita sig själv.
        private void CreateMatrix(string course)
        {
           Matrix matrix = new Matrix(course, 0, 0, 50, 50);
           mainPanel.Controls.Clear();
           mainPanel.Controls.AddRange(matrix.Draw());
        }
        //Öppnar formen för att lägga till kurser.
        private void läggTillKursToolStripMenuItem_Click(object sender, EventArgs e)
        {
           
            SavedData.mainPanel.Controls.Clear();

            laggtillcourse formen = new laggtillcourse();
            foreach (Control x in formen.Controls) {
                SavedData.mainPanel.Controls.Add(x);
            }
           formen.Dispose();

          
        }
        //Skapar lsitan för att ta bort kurser
        public void DeleteCourse() {

            taBortKursToolStripMenuItem.DropDownItems.Clear();
            Tabell<string> temp = new Tabell<string>(Myskul.Command("SELECT name FROM `course`"));
            List<string> KursNamn = temp.getColumn(0);

            ToolStripMenuItem [] element = new ToolStripMenuItem[KursNamn.Count];
            for (int i = 0; i < element.Length; i++) {
                element[i] = new ToolStripMenuItem();
                element[i].Text = KursNamn[i];
                element[i].Click += new EventHandler(SelectedMenuItemEvent);

            }

            taBortKursToolStripMenuItem.DropDownItems.AddRange(element);

        
        }
        //Tar bort en kurs
        private void SelectedMenuItemEvent(object sender, EventArgs e){
            
            ToolStripMenuItem thiselement = (ToolStripMenuItem)sender;
            DialogResult dialogres = MessageBox.Show("Vill du verkligen ta bort kursen '" + thiselement.Text+ "'", " ", MessageBoxButtons.YesNo);
            if (dialogres == DialogResult.Yes)
            {
                Myskul.Command("DELETE FROM course  WHERE name = '"+ thiselement.Text +"';");
            }
            DeleteCourse();
            UpdateCourseList();
    }
        //Uppdaterar kurslistan.
        private void refreshF5ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UpdateCourseList();
            if(SavedData.matrix!=null)
                CreateMatrix(SavedData.matrix.getCourse());
        }
        //Öppnar dialogen för att redigera profil.
        private void redigeraProfilToolStripMenuItem_Click(object sender, EventArgs e)
        {
            EditProfile tempDialog = new EditProfile();
            tempDialog.ShowDialog();
            tempDialog.Dispose();
        }
        //Öppnar dialogen för att lära sig färgkodning
        private void färgkoderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Colorhelp tempDialog = new Colorhelp();
            tempDialog.ShowDialog();
            tempDialog.Dispose();
        }
        //Läser av då man trycker enr en tangent för att refresha.
        private void laxomatic_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                UpdateCourseList();
                if(SavedData.matrix!=null)
                CreateMatrix(SavedData.matrix.getCourse());
                MessageBox.Show("Test");
            }
        }
    }
}
